/*
 * wk_slist_types.h
 *
 *  Created on: 2012-2-25
 *      Author: tianmax
 *
 *  功能：单向链表中所用到的结构体、类型定义
 */

#ifndef __WK_SLIST_TYPES_H__
#define __WK_SLIST_TYPES_H__

#include "wk_types.h"
#include "wk_element.h"

///**
// * 给List数据元素类型起别名
// * 这样做的目的是便于直接将通用List变为专用List
// */
//typedef void* WPSListElementType;

/*定义节点结构体*/
struct wk_slist_node{
//	WPSListElementType e;
	WPElement e;
	struct wk_slist_node* next;
};

/*给节点类型起别名*/
typedef struct wk_slist_node WSListNode;
typedef struct wk_slist_node* WPSListNode;

/**
 * 定义该种数据类型的类型
 */
struct wk_slist{
	WPSListNode head;
	WPSListNode current;
	/*元素比较器*/
	wk_element_comp comp;
};
typedef struct wk_slist WSList;

///**
// * 给比较函数指针类型起别名
// */
//typedef int (*wk_slist_comp)(WPSListElementType data1,WPSListElementType data2);
//
///**
// * 给遍历操作函数指针起别名
// * ctx上下文
// */
//typedef void* (*wk_slist_iterate_do)(WPSListElementType data,void* ctx);

/**
 * 给遍历器操作函数指针起别名
 */
typedef void* (*wk_slist_iterator)(WSList* list,wk_element_iterate_do iterate_do,void* ctx);

#endif /* WK_SLIST_TYPES_H_ */
